package com.petdog.infrastructure.entity;

/**
 * 犬种信息实体类
 */
public class BreedInfo {
    private Integer breedId;
    private String breedName;        // 品种名称(中文)
    private String englishName;      // 品种名称(英文)
    private String scientificName;   // 学名
    private String originCountry;    // 原产国
    private String size;             // 体型分类(小型/中型/大型)
    private Float minHeight;         // 最小高度(厘米)
    private Float maxHeight;         // 最大高度(厘米)
    private Float minWeight;         // 最小重量(公斤)
    private Float maxWeight;         // 最大重量(公斤)
    private Integer minLifeExpectancy; // 最短预期寿命(年)
    private Integer maxLifeExpectancy; // 最长预期寿命(年)
    private Integer lifeExpectancy;  // 平均预期寿命(年)
    private String akcGroup;         // AKC品种组(玩具组、工作组等)
    private String description;      // 详细描述
    private String temperament;      // 气质
    private String personality;      // 性格特点
    private String appearance;       // 外观特征
    private Float groomingLevel;     // 美容要求级别(0~1)
    private String groomingCategory; // 美容要求分类
    private Float sheddingLevel;     // 脱毛程度(0~1)
    private String sheddingFrequency; // 脱毛频率
    private Float energyLevel;       // 活力程度(0~1)
    private String energyCategory;   // 活力程度分类
    private Float trainabilityScore; // 可训练性(0~1)
    private String trainabilityCategory; // 可训练性分类
    private Float friendlinessScore; // 友好程度(0~1)
    private String attitudeTowardsStrangers; // 对陌生人的态度
    private String attitudeTowardsDogs; // 对其他犬的态度
    private String groomingNeeds;    // 美容需求
    private String exerciseNeeds;    // 运动需求
    private String healthConcerns;   // 健康关注点
    private String trainability;     // 可训练性文本描述
    private String suitableFor;      // 适合人群
    private String imageUrl;         // 犬种图片URL
    private Integer popularityRank;  // 流行度排名

    // Getters and Setters
    public Integer getBreedId() { return breedId; }
    public void setBreedId(Integer breedId) { this.breedId = breedId; }
    
    public String getBreedName() { return breedName; }
    public void setBreedName(String breedName) { this.breedName = breedName; }
    
    public String getEnglishName() { return englishName; }
    public void setEnglishName(String englishName) { this.englishName = englishName; }
    
    public String getScientificName() { return scientificName; }
    public void setScientificName(String scientificName) { this.scientificName = scientificName; }
    
    public String getOriginCountry() { return originCountry; }
    public void setOriginCountry(String originCountry) { this.originCountry = originCountry; }
    
    public String getSize() { return size; }
    public void setSize(String size) { this.size = size; }
    
    public Float getMinHeight() { return minHeight; }
    public void setMinHeight(Float minHeight) { this.minHeight = minHeight; }
    
    public Float getMaxHeight() { return maxHeight; }
    public void setMaxHeight(Float maxHeight) { this.maxHeight = maxHeight; }
    
    public Float getMinWeight() { return minWeight; }
    public void setMinWeight(Float minWeight) { this.minWeight = minWeight; }
    
    public Float getMaxWeight() { return maxWeight; }
    public void setMaxWeight(Float maxWeight) { this.maxWeight = maxWeight; }
    
    public Integer getMinLifeExpectancy() { return minLifeExpectancy; }
    public void setMinLifeExpectancy(Integer minLifeExpectancy) { this.minLifeExpectancy = minLifeExpectancy; }
    
    public Integer getMaxLifeExpectancy() { return maxLifeExpectancy; }
    public void setMaxLifeExpectancy(Integer maxLifeExpectancy) { this.maxLifeExpectancy = maxLifeExpectancy; }
    
    public Integer getLifeExpectancy() { return lifeExpectancy; }
    public void setLifeExpectancy(Integer lifeExpectancy) { this.lifeExpectancy = lifeExpectancy; }
    
    public String getAkcGroup() { return akcGroup; }
    public void setAkcGroup(String akcGroup) { this.akcGroup = akcGroup; }
    
    public String getDescription() { return description; }
    public void setDescription(String description) { this.description = description; }
    
    public String getTemperament() { return temperament; }
    public void setTemperament(String temperament) { this.temperament = temperament; }
    
    public String getPersonality() { return personality; }
    public void setPersonality(String personality) { this.personality = personality; }
    
    public String getAppearance() { return appearance; }
    public void setAppearance(String appearance) { this.appearance = appearance; }
    
    public Float getGroomingLevel() { return groomingLevel; }
    public void setGroomingLevel(Float groomingLevel) { this.groomingLevel = groomingLevel; }

    // 计算并返回体重范围
    public String getWeightRange() {
        if (minWeight == null && maxWeight == null) {
            return "未知"; 
        } else if (minWeight == null) {
            return maxWeight + " kg"; 
        } else if (maxWeight == null) {
            return minWeight + " kg"; 
        } else if (minWeight.equals(maxWeight)) {
            return minWeight + " kg"; 
        } else {
            return minWeight + " - " + maxWeight + " kg"; 
        }
    }
    
    // 计算并返回身高范围
    public String getHeightRange() {
        if (minHeight == null && maxHeight == null) {
            return "未知"; 
        } else if (minHeight == null) {
            return maxHeight + " cm"; 
        } else if (maxHeight == null) {
            return minHeight + " cm"; 
        } else if (minHeight.equals(maxHeight)) {
            return minHeight + " cm"; 
        } else {
            return minHeight + " - " + maxHeight + " cm"; 
        }
    }
    
    public String getGroomingCategory() { return groomingCategory; }
    public void setGroomingCategory(String groomingCategory) { this.groomingCategory = groomingCategory; }
    
    public Float getSheddingLevel() { return sheddingLevel; }
    public void setSheddingLevel(Float sheddingLevel) { this.sheddingLevel = sheddingLevel; }
    
    public String getSheddingFrequency() { return sheddingFrequency; }
    public void setSheddingFrequency(String sheddingFrequency) { this.sheddingFrequency = sheddingFrequency; }
    
    public Float getEnergyLevel() { return energyLevel; }
    public void setEnergyLevel(Float energyLevel) { this.energyLevel = energyLevel; }
    
    public String getEnergyCategory() { return energyCategory; }
    public void setEnergyCategory(String energyCategory) { this.energyCategory = energyCategory; }
    
    public Float getTrainabilityScore() { return trainabilityScore; }
    public void setTrainabilityScore(Float trainabilityScore) { this.trainabilityScore = trainabilityScore; }
    
    public String getTrainabilityCategory() { return trainabilityCategory; }
    public void setTrainabilityCategory(String trainabilityCategory) { this.trainabilityCategory = trainabilityCategory; }
    
    public Float getFriendlinessScore() { return friendlinessScore; }
    public void setFriendlinessScore(Float friendlinessScore) { this.friendlinessScore = friendlinessScore; }
    
    public String getAttitudeTowardsStrangers() { return attitudeTowardsStrangers; }
    public void setAttitudeTowardsStrangers(String attitudeTowardsStrangers) { this.attitudeTowardsStrangers = attitudeTowardsStrangers; }
    
    public String getAttitudeTowardsDogs() { return attitudeTowardsDogs; }
    public void setAttitudeTowardsDogs(String attitudeTowardsDogs) { this.attitudeTowardsDogs = attitudeTowardsDogs; }
    
    public String getGroomingNeeds() { return groomingNeeds; }
    public void setGroomingNeeds(String groomingNeeds) { this.groomingNeeds = groomingNeeds; }
    
    public String getExerciseNeeds() { return exerciseNeeds; }
    public void setExerciseNeeds(String exerciseNeeds) { this.exerciseNeeds = exerciseNeeds; }
    
    public String getHealthConcerns() { return healthConcerns; }
    public void setHealthConcerns(String healthConcerns) { this.healthConcerns = healthConcerns; }
    
    public String getTrainability() { return trainability; }
    public void setTrainability(String trainability) { this.trainability = trainability; }
    
    public String getSuitableFor() { return suitableFor; }
    public void setSuitableFor(String suitableFor) { this.suitableFor = suitableFor; }
    
    public String getImageUrl() { return imageUrl; }
    public void setImageUrl(String imageUrl) { this.imageUrl = imageUrl; }
    
    public Integer getPopularityRank() { return popularityRank; }
    public void setPopularityRank(Integer popularityRank) { this.popularityRank = popularityRank; }
}
